#!/bin/zsh
# Call me paranoid, but I want to be really certain antidote will never rm something it
# shouldn't. This function wraps rm to double check that any paths being removed are
# valid. If it's not in your $HOME or $TMPDIR, we need to block it.

#function __antidote_del {
  emulate -L zsh; setopt local_options

  local -a rmflags rmpaths
  local p

  while (( $# )); do
    case "$1" in
      --)  shift; break   ;;
      -*)  rmflags+=($1)  ;;
      *)   break          ;;
    esac
    shift
  done

  (( $# > 0 )) || return 1

  local tmpdir
  if [[ -n "$TMPDIR" && (( -d "$TMPDIR" && -w "$TMPDIR" ) || ! ( -d /tmp && -w /tmp )) ]]; then
    tmpdir="${TMPDIR%/}"
  else
    tmpdir="/tmp"
  fi

  for p in $@; do
    p="${p:a}"
    if [[ "$p" != ${HOME}/* ]] && [[ "$p" != ${tmpdir}/* ]]; then
      print -ru2 -- "antidote: Blocked attempt to rm path: '$p'."
      return 1
    fi
  done

  command rm ${rmflags[@]} -- "$@"
#}
